package com.qkjia.oauth2jwtserver.config;

import com.qkjia.oauth2jwtserver.enhancer.JwtTokenEnhancer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

/**
 * Description:
 *
 * @author JourWon
 * @date 2019/12/24 10:14
 *
 * 使用JWT存储令牌
 * 添加使用JWT存储令牌的配置：
 */
@Configuration
public class JwtTokenStoreConfig {//JWT令牌存储配置

    @Bean
    @Primary//@Primary：让Spring进行自动装配的时候，默认使用首选的bean；
// * 				也可以继续使用@Qualifier指定需要装配的bean的名字

    public TokenStore jwtTokenStore() {
        return new JwtTokenStore(jwtAccessTokenConverter());
    }

    @Bean
    public JwtTokenEnhancer jwtTokenEnhancer() {
        return new JwtTokenEnhancer();
    }//Jwt 令牌增强器 JwtTokenEnhancer类的

    @Bean
    public JwtAccessTokenConverter jwtAccessTokenConverter() {//Jwt 访问令牌转换器
        JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();
        // 配置jwt使用的密钥
        jwtAccessTokenConverter.setSigningKey("test_key");
        return jwtAccessTokenConverter;
    }

}
